Jeg har et datasæt som angivet nedenfor Navn col1 col2 a 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 Jeg vil sammenligne col1 og col2 i min df, og jeg vil lave en anden kolonne, hvor jeg, mens jeg sammenligner col1- og col2-værdier, hvis værdien af col2 stiger fra col1, så vil jeg indtaste stigning ved siden af dem i min kolonne der, og hvis de er faldende, så vil jeg skrive faldende og ingen ændringer, hvis de er de samme og jeg vil have min produktion som denne navn col1 col2 col3 en stigning på 10,3 10,9 b 11 15 stigende c 20 7.2 faldende d 6.2 6.2 ingen ændring e 5.3 5.4 stigende f 4,5 4,0 faldende
2021-01-31 08:14:19
Med dplyr: df%>% mutere (Col3 = ifelse (col2 == col1, "ingen ændring", ifelse (col2> col1, "stigende", "faldende"))) Eller ved hjælp af case_when som foreslået af @akrun: df%>% mutere (Col3 = case_when (col1 == col2 ~ "ingen ændring", col2> col1 ~ "Stiger", SAND ~ ~ faldende))) Resultat: navn col1 col2 Col3 1 a 10,3 10,9 stigende 2 b 11,0 15,0 stigende 3 c 20,0 7,2 faldende 4 d 6,2 6,2 ingen ændring 5 e 5.3 5.4 stigende 6 f 4,5 4,0 faldende Data: df <-struktur (liste (navn = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), klasse = "data.frame", række.names = c (NA, -6L)) | Vi kan trække col1 af col2 og derefter bruge tegn til at tildele værdier df $ col3 <- c ("faldende", "ingen ændring", "stigende") [tegn (df $ col1 - df $ col2) + 2] df # navn col1 col2 col3 # 1 a 10.3 10.9 faldende # 2 b 11,0 15,0 faldende # 3 c 20.0 7.2 stigende # 4 d 6.2 6.2 ingen ændring # 5 e 5.3 5.4 faldende # 6 f 4.5 4.0 stigende Eller ved hjælp af dplyr kan vi bruge case_when bibliotek (dplyr) df%>% mutere (col3 = case_when (col1 == col2 ~ "ingen ændring", col1> col2 ~ "stigende", SAND ~ "faldende")) | Basis R df $ col3 <-med (df, ifelse (col1> col2, "faldende", ifelse (col1